package es.us.lsi.daw.controllers;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import es.us.lsi.daw.model.security.WebUser;
import es.us.lsi.daw.util.Vista;

@Controller
public class ControllerListado extends ControllerGenerico{

	@RequestMapping(PRIVADO+"listUserDg.do")
	public ModelAndView listUserdg() {
		return new ModelAndView(Vista.LIST_USER_DG);
	}
	
	// @formatoOff
	/**
	 * Dg para las búsquedas guardadas
	 * 
	 * @param colOrdenar
	 *            the col ordenar
	 * @param tipoOrden
	 *            the tipo orden
	 * @param paginaActual
	 *            the pagina actual
	 * @param numElemMostrar
	 *            the num elem mostrar
	 * @param qtype
	 *            the qtype
	 * @param query
	 *            the query
	 * @return the model and view
	 */
	@RequestMapping(PRIVADO+"listUserDgAjax.do")
	public ModelAndView listUserDg(
	HttpServletRequest request, HttpSession httpSession,
	 @RequestParam("sortname") String colOrdenar, // Almacena el nombre de la columna por la que el usuario ordena.
	 @RequestParam("sortorder") String tipoOrden, // Tipo de orden. Hay que indicar el orden por defecto "asc" o "desc".
	 @RequestParam("page") int paginaActual, // Número de páginas.
	 @RequestParam("rp") int numElementos, // Número de elementos que se muestran por defecto.
	 @RequestParam("qtype") String buscarTexto, // Cadena de texto para la búsqueda.
	 @RequestParam("query") String buscarEnCol // Columna por la que se busca.
	) {

		List<WebUser> lstUser = this.daoComun.getListaClase(WebUser.class);
		int numTotalPaginas = lstUser.size();
		ModelMap mapFila;
		List<ModelMap> lstFilas = new ArrayList<ModelMap>();

		// Generación del datagrid.
		for (WebUser usuario : lstUser) {
			long idUsuario = usuario.getId();
			
			
			String nombre = usuario.getName();
			String apellido = usuario.getSurname();
			
			String colNombre = 	"<span title='"+nombre+"'>"+nombre+"</span>";
			String colApellido = "<span title='"+apellido+"'>"+apellido+"</span>";
			

			Object[] fila = { colNombre, colApellido};

			mapFila = new ModelMap();
			mapFila.addAttribute("id", idUsuario);
			mapFila.addAttribute("cell", fila);

			lstFilas.add(mapFila);
		}

		ModelMap mapModelo = new ModelMap();
		mapModelo.addAttribute("page", 1);
		mapModelo.addAttribute("total", numTotalPaginas);
		mapModelo.addAttribute("rows", lstFilas);

		return new ModelAndView("jsonView", mapModelo);
	}
	// @formatoOn
}
